/**
  
 */


// class Prototype {
//   public primitive: any;
//   public component: object;
//   public circularReference: ComponentWithBackReference;

//   public clone(): this {
//     const clone = Object.create(this);

//     clone.component = Object.create(this.component);

//     clone.circularReference = {
//       ...this.circularReference,
//       prototype: { ...this },
//     };

//     return clone;
//   }
// }

// class ComponentWithBackReference {
//   public prototype;

//   constructor(prototype: Prototype) {
//     this.prototype = prototype;
//   }
// }

// const p1 = new Prototype();
// p1.primitive = 245;
// p1.component = new Date();
// p1.circularReference = new ComponentWithBackReference(p1);
// console.log(p1);

// const p2 = p1.clone();
// console.log(p2);
